
    // // ES6之前
    // function getTea(fn) {
    //     setTimeout(function() {
    //         fn("奶茶");
    //     }, 1000);
    // }

    // function gethotPot(fn) {
    //     setTimeout(function() {
    //         fn("火锅");
    //     }, 2000);
    // }

    // gethotPot(function(data) {
    //     console.log(data);
    //     getTea(function(data) {
    //         console.log(data);
    //     });
    // });

    // // Promise对象
    // function getPMTea() {
    //     return new Promise(function(resolve) {
    //         setTimeout(function() {
    //             resolve("奶茶");
    //         }, 3000);
    //     });
    // }

    // function getPMhotPot() {
    //     return new Promise(function(resolve) {
    //         setTimeout(function() {
    //             resolve("火锅");
    //         }, 5000);
    //     });
    // }

    // getPMhotPot().then(function(data) {
    //     console.log(data);
    //     return getPMTea();
    // }).then(function(data) {
    //     console.log(data)
    // });

    // // async函数 和 await关键字
    // function getACTea() {
    //     return new Promise(function(resolve) {
    //         setTimeout(function() {
    //             resolve("奶茶");
    //         }, 3000);
    //     });
    // }

    // function getAChotPot() {
    //     return new Promise(function(resolve) {
    //         setTimeout(function() {
    //             resolve("火锅");
    //         }, 5000);
    //     });
    // }

    // // await关键字可以获取promise对象返回的数据
    // async function getSomething() {
    //     let hotpot = await getAChotPot();
    //     console.log(hotpot);
    //     let tea = await getACTea();
    //     console.log(tea);
    // }

    // getSomething();

    let arr = [1, 2, 3]
    console.log(arr)
    arr = array_map(function(v) {
        return v = v + 1
    }, arr)
    console.log(arr)

    let arr1 = 'abc'
    console.log(arr1)
    arr1 = array_map(function(v) {
        return v = v + 1
    }, arr1)
    console.log(arr1)

    function array_map(methods, array) {
        if(Array.isArray(array)) {
            if(array.length == 0) {
                return array
            }
            else {
                let newArray = []
                for(let i=0;i<array.length;i++) {
                    let items = methods(array[i])
                    newArray.push(items)
                }
                return newArray
            }
        }
        else {
            console.error('Type Error: second param must be an array.')
        }
    }

